# _*_ coding:utf-8 _*_
# 开发团队: Mavericks
# 开发人员：Maverick·Ming
# 开发IDE： PyCharm
#   项目名：HelloWorld
#   文件名：6.02 定义类.py
# 开发时间：2021/3/25 19:53

# 默认模板
# class ClassName(object):
#     """docstring for ClassName"""
#     def __init__(self, arg):
#         super(ClassName, self).__init__()
#         self.arg = arg

# 尝试定义一个表示人类的类
# 创建Person的类
class Person:
    # 在类代码块中，我们可以定义变量和函数
    # 在类中所定义的变量和函数，将会成为公共属性
    # 所有实例都可以访问公共属性
    # 类中的变量称为属性
    name = 'human'  #
    # 类中的函数称为方法

    # @staticmethod # 如果是静态方法，则不需要形参也可以调用，否则至少有一个形参
    def say_hello(self, say):
        # 方法每次被调用时，解析器都会自动传递第一个实参self，即对应的【实例对象】本身
        # 类中的方法无法直接访问类的属性，所以要用self.attribute
        print(self.name, "向您say %s " % say)


# 创建Person的实例
p1 = Person()
p1.name = 'MaverickMing'
p1.say_hello('猜猜我是谁')  # 如果say_hello方法没有定义形参，则会抛出异常
# TypeError: say_hello() takes 0 positional arguments but 1 was given

# 方法调用与函数调用的区别
# 如果是函数调用，则调用时传几个参数就几个参数
# 如果是方法调用，默认传递一个参数，所以Python方法中至少定义一个形参


